﻿// <copyright file="XmlGeneratorExample.cs" company="graphs-dotnet">
// Copyright 2009 Dmitri Pavlenkov
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. 
// You may obtain a copy of the License at 
// 
// http://www.apache.org/licenses/LICENSE-2.0 
// 
// Unless required by applicable law or agreed to in writing, software 
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License. 
//
// THIRD PARTY LICENSES
//
// This file's code annotations follow David Betz' Code Annotation Format.
// The orignal can be obtained at
//
// http://www.netfxharmonics.com/document/code/format
//
// </copyright>
// <summary>
// XmlGeneratorExample.cs file.
// </summary>
//+

namespace Graphs.Tests.Impl
{
  using System;
  using System.Xml.Linq;
  using System.Collections.Generic;
  //+
  using Graphs.Impl;
  //+
  
  /// <summary>
  /// XmlGeneratorExample.
  /// </summary>
  public class XmlGeneratorExample : IXmlComposite<string>
  {
    //+ field
    private int id;
    public  List<XmlGeneratorExample> Children { get; set; }
    
    //- @Ctor -//
    public XmlGeneratorExample(int identifier)
    {
      id=identifier;
      Children=new List<XmlGeneratorExample>();
    }
    
    //+
    
    //- @Add -//
    public void Add(int id) 
    {
      Children.Add(new XmlGeneratorExample(id));
    }
    //- @GenerateXml -//
    public XElement GenerateXml() 
    {
      return new XElement(String.Format("Node{0}",id));
    }
    
    //- @AddChildren -//
    public void AddChildren(XmlTreeComposite<string> graph) 
    {
      for(int i=0;i<Children.Count;i++)
      {
        graph[i.ToString()].XmlGenerator=Children[i];
      }
     
    }

  }
}
